package cn.jofei.core.container;

import cn.jofei.common.reflect.ReflectionMethod;
import cn.jofei.core.bean.BeanDefined;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * Container接口
 *
 * @author Jofei Bao
 * @version ngbao v1.0.2
 * @date 2022/7/11 13:58
 */
public interface Container {
    /**
     * 低配版 serverLet 容器
     * 《serverLet路径，反射方法》
     * 《监听类名器，反射方法》
     */
    Map<String, ReflectionMethod> SERVER_LET_MAP = new HashMap<>();

    /**
     * 类实例
     * 《类，实例》
     */
    Map<Class<?>, Object> CLASS_INSTANCE_MAP = new HashMap<>();
    /**
     * bean -> class 映射
     */
    ConcurrentHashMap<String, Class<?>> BEAN_MAPPING = new ConcurrentHashMap<>();
    /**
     * class 与 beanName 的映射
     */
    ConcurrentHashMap<Class<?>, String> CLASS_BEAN_MAPPING = new ConcurrentHashMap<>();
    /**
     * beanName 与 bean定义 的映射
     */
    ConcurrentHashMap<String, BeanDefined> BEAN_BEAN_DEFINED_MAPPING = new ConcurrentHashMap<>();
    /**
     * beanName 与 bean 的映射
     */
    ConcurrentHashMap<String, Object> BEAN_NAME_BEAN_MAPPING = new ConcurrentHashMap<>();
}
